package cn.org.cute.ebocy.util;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

public class DataPicker {
	String[][] sepa = null;
	/**
	* @ param sepa 是一个二维数组，表示所需内容分隔字串。
	               String[N][2]。sepa[N][0]是头，sepa[N][1]是尾。
	               如果每一组内容包括多个值，可设置多个头，尾。
	*/
	public DataPicker(String[][] sepa){
		this.sepa = sepa;
	}
	
	/**
	* @param f 需要处理的文件
	* @return  一个ArrayList。每个元素的内容是一个一维数组。表示一组内容。
	*/
	public ArrayList<String[]> pickData(File f)throws IOException{
		return pickData(NormalUtil.readTextFile(f));
	}
	/*
	public ArrayList pickDataStrict(File f)throws Exception{
		return pickDataStrict(InfoUtil.getContentFromFile(f));
	}
	*/
	/**
	* @param content 需要处理的内容
	* @return  一个ArrayList。每个元素的内容是一个一维数组。表示一组内容。
	*/
	public ArrayList<String[]> pickData(String content){
		ArrayList<String[]> datalist = new ArrayList<String[]>();
		//n：每一组内容的值的个数。
		int n = sepa.length;
		int begin = 0;
		int end = 0;
		boolean endpos = false;
		String[] data = null;
		while(true){
			data = new String[n];
			for(int i=0;i<n;i++){
				//System.out.println(content);
				begin = content.indexOf(sepa[i][0],begin);
				//System.out.println(sepa[i][0]+":"+begin);
				if(begin < 0){
					endpos = true;
					break;
				}
				begin += sepa[i][0].length();
				end = content.indexOf(sepa[i][1],begin);
				if(end < 0){
					endpos = true;
					break;
				}
				
				data[i] = content.substring(begin,end);
				//System.out.println("TEST:"+data[i]);
				begin = end + sepa[i][1].length();
				
				
				
			}
			if(endpos){
				//System.out.println("BREAK:");
				break;
			}
			datalist.add(data);
		}
		return datalist;
	}
	/*
	public ArrayList pickDataStrict(String content)throws Exception{
		ArrayList datalist = new ArrayList();
		//n：每一组内容的值的个数。
		int n = sepa.length;
		int begin = 0;
		int end = 0;
		boolean endpos = false;
		String[] data = null;
		while(true){
			boolean flag = false;
			data = new String[n];
			for(int i=0;i<n;i++){
				//System.out.println(content);
				begin = content.indexOf(sepa[i][0],begin);
				//System.out.println(sepa[i][0]+":"+begin);
				if(begin < 0){
					continue;
				}
				else{
					flag = true;
				    begin += sepa[i][0].length();
				}
				end = content.indexOf(sepa[i][1],begin);
				if(end < 0){
					continue;
				}
				
				
				data[i] = content.substring(begin,end);
				//System.out.println("TEST:"+data[i]);
				begin = end + sepa[i][1].length();
			}
			if(!flag){
				//System.out.println("BREAK:");
				break;
			}
			datalist.add(data);
		}
		return datalist;
	}
	*/
	/**
	* @param f 需要处理的文件
	* @return  一个String。所有值以\t \n分隔的文本。
	*/
	
	public String pickDataInString(File f)throws IOException{
		return pickDataInString(NormalUtil.readTextFile(f));
	}
	
	/**
	* @param content 需要处理的内容
	* @return  一个String。所有值以\t \n分隔的文本。
	*/
	public String pickDataInString(String content){
		ArrayList<String[]> al = new ArrayList<String[]>();
		String[] values = null;
		String valueString = "";
		
		al = pickData(content);
		for(int n=0;n<al.size();n++){
			values = al.get(n);
			if(n>0){
				valueString += "\n";
			}
			for(int m=0;m<values.length;m++){
				if(m>0){
					valueString += "\t";
				}
				valueString += values[m];
			}
		}
		
		return valueString;
		
	}
	
}
